package com.fjwt.gz.proxy.util;

import cn.hutool.core.map.MapUtil;
import com.fjwt.gz.core.constants.Constants;
import com.fjwt.gz.db.entity.ActivityEntity;
import com.fjwt.gz.db.entity.AwardCouponEntity;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

public class FileParamsUtil {
    /**
     * 参数组装
     * @param dataMap
     * @param activityEntity
     * @param coupon
     */
    public static File toExportWordDataMap(Map<String,Object> dataMap, ActivityEntity activityEntity, AwardCouponEntity coupon){
        File file = null;
        // 活动名称
        dataMap.put("title",activityEntity.getActivityName());
        if(Constants.COUPON_TYPE.WXMJ == coupon.getCouponType()){
            /*
             * 满减券
             * title
             * type 活动类型（代金券之类）
             * activityNo 活动编号
             * name (卡券名称、活动名称)
             * price 面额
             * priceStart
             * priceEnd
             * start 开始时间
             * end 结束时间
             * maxNum 用户最大领取数
             * num 总领取数
             * dayMaxNum 单天最大数
             * restrict 限制卡支付
             * */
            dataMap.put("name","微信满减券活动");
            dataMap.put("type","☐代金券   ☑满立减   ☐随机减");
            dataMap.put("activityNo",activityEntity.getActivityNo());
            dataMap.put("name",activityEntity.getActivityName());
            dataMap.put("price",computeResult(coupon.getCouponPrice()));
            dataMap.put("priceStart",computeResult(coupon.getPayAmount()));
            dataMap.put("priceEnd",computeResult(coupon.getCouponPrice()));
            dataMap.put("start",dateFormat(coupon.getStartTime()));
            dataMap.put("end",dateFormat(coupon.getEndTime()));
            dataMap.put("maxNum",coupon.getEveryoneMaxNum());
            dataMap.put("num",coupon.getCouponNum());
            dataMap.put("dayMaxNum",coupon.getEverydayMaxNum());
            dataMap.put("restrict", MapUtil.getStr(Constants.RESTRICT_BANK_TYPE_MAP,coupon.getIsRestrictBank()));
            file = WordUtils.createDoc(dataMap,"manjian.ftl");
        }else if(Constants.COUPON_TYPE.WXSJJ == coupon.getCouponType()){
            /*
             * 随机券
             * title
             * type 活动类型（代金券之类）
             * activityNo 活动编号
             * name (卡券名称、活动名称)
             * price 面额
             * start 开始时间
             * end 结束时间
             * amountCount 总预算
             * priceStart
             * priceEnd
             * maxNum 用户最大领取数
             * dayMaxNum 用户最大领取数
             * restrict 限制卡支付
             *
             * 已对接完
             * */
            dataMap.put("type","☐代金券   ☐满立减   ☑随机减");
            dataMap.put("activityNo",activityEntity.getActivityNo());
            dataMap.put("name",activityEntity.getActivityName());
            dataMap.put("price",computeResult(coupon.getPayAmount()));
            dataMap.put("start",dateFormat(coupon.getStartTime()));
            dataMap.put("end",dateFormat(coupon.getEndTime()));
            dataMap.put("amountCount",computeResult(coupon.getCouponAmount()));
            dataMap.put("priceStart",computeResult(coupon.getPriceStart()));
            dataMap.put("priceEnd",computeResult(coupon.getPriceEnd()));
            dataMap.put("maxNum",coupon.getEveryoneMaxNum());
            dataMap.put("dayMaxNum",coupon.getEverydayMaxNum());
            dataMap.put("restrict", MapUtil.getStr(Constants.RESTRICT_BANK_TYPE_MAP,coupon.getIsRestrictBank()));
            file = WordUtils.createDoc(dataMap,"random.ftl");
        }else if(Constants.COUPON_TYPE.WXDJQ == coupon.getCouponType()){
            /*
             * 代金券
             * title
             * type 活动类型（代金券之类）
             * activityNo 活动编号
             * name (卡券名称、活动名称)
             * price 面额
             * amount 使用门槛
             * start 开始时间
             * end 结束时间
             * maxNum 用户最大领取数
             * num 卡券数量
             * restrict 限制卡支付
             * */
            dataMap.put("type","☑代金券   ☐满立减   ☐随机减");
            dataMap.put("activityNo",activityEntity.getActivityNo());
            dataMap.put("name",coupon.getCouponName());
            dataMap.put("price",computeResult(coupon.getCouponPrice()));
            dataMap.put("amount",computeResult(coupon.getPayAmount()));
            dataMap.put("start",dateFormat(coupon.getStartTime()));
            dataMap.put("end",dateFormat(coupon.getEndTime()));
            dataMap.put("maxNum",coupon.getEveryoneMaxNum());
            dataMap.put("num",coupon.getCouponNum());
            dataMap.put("restrict", MapUtil.getStr(Constants.RESTRICT_BANK_TYPE_MAP,coupon.getIsRestrictBank()));
            file = WordUtils.createDoc(dataMap,"daijin.ftl");
        }
        return file;
    }

    /**
     * 计算金额保留两位小数
     * @param param
     * @return
     */
    private static String computeResult(Integer param) {
        float v = param / 100f;
        String s = String.format("%.2f",v);
        return s;
    }

    /**
     * 日期格式转换
     * @param date
     * @return
     */
    private static String dateFormat(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
        String format = sdf.format(date);
        System.out.println("format = " + format);
        return format;
    }
}
